package de.revdev.streckenliste.managedbeans;

import de.revdev.streckenliste.beans.Register;
import de.revdev.streckenliste.beans.exception.EMailVorhandenException;
import de.revdev.streckenliste.dao.BenutzerDAO;
import de.revdev.streckenliste.entities.Adresse;
import de.revdev.streckenliste.entities.Benutzer;
import java.util.Calendar;
import javax.annotation.PostConstruct;
import javax.enterprise.context.RequestScoped;
import javax.faces.application.FacesMessage;
import javax.faces.component.UIComponent;
import javax.faces.context.FacesContext;
import javax.inject.Inject;
import javax.inject.Named;

/**
 *
 * @author Nina
 */
@Named(value = "registrierenBean")
@RequestScoped
public class RegistrierenBean {

    @Inject
    private Register register;
    @Inject
    private BenutzerDAO benutzerDAO;
    private String pickDate;
    private Benutzer benutzer;
    private Adresse adresse;
    private UIComponent emailFeld;

    @PostConstruct
    public void init() {
        benutzer = new Benutzer();
        adresse = new Adresse();
    }

    public void setPickDate(String pickDate) {
        this.pickDate = pickDate;
    }

    public String getPickDate() {
        Calendar cal = Calendar.getInstance();
        cal.add(Calendar.YEAR, -40);
        pickDate = "15.06." + cal.get(Calendar.YEAR);
        return pickDate;
    }

    public Benutzer getBenutzer() {
        return benutzer;
    }

    public void setBenutzer(Benutzer benutzer) {
        this.benutzer = benutzer;
    }

    public Adresse getAdresse() {
        return adresse;
    }

    public void setAdresse(Adresse adresse) {
        this.adresse = adresse;
    }

    /**
     * Creates a new instance of RegistrierenBean
     */
    public RegistrierenBean() {
    }

    public UIComponent getEmailFeld() {
        return emailFeld;
    }

    public void setEmailFeld(UIComponent emailFeld) {
        this.emailFeld = emailFeld;
    }

    public String speichern() {
        benutzer.setRolle("Jaeger");
        try {
            benutzerDAO.findByEMail(benutzer.getEmail());
            FacesContext.getCurrentInstance().addMessage(emailFeld.getClientId(), new FacesMessage(FacesMessage.SEVERITY_ERROR, "E-Mail bereits vorhanden", "E-Mail bereits vorhanden"));
            return "";
        } catch (Exception nre) {
            try {
                register.registriereBenutzer(benutzer, adresse);
                return "/faces/index.xhtml?redirect=true";
            } catch (EMailVorhandenException eve) {
                return "";
            }
        }
    }
}
